5.8 实例
1、根据出生日期计算年龄
import pandas as pd,datetime as dti
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.根据出生算年龄.xlsx" )
print (df)
s=df.出生日期.dt.year
today=dti.datetime.now().year
df[ "年龄" ]=today-s
print (df)
返回:
姓名 | 出生日期 | |
---|---|---|
0 | 张三 | 1990-05-04 |
1 | 李四 | 1989-06-19 |
2 | 王麻子 | 1976-08-04 |
3 | 小曾 | 1966-10-12 |
姓名 | 出生日期 | 年龄 | |
---|---|---|---|
0 | 张三 | 1990-05-04 | 34 |
1 | 李四 | 1989-06-19 | 35 |
2 | 王麻子 | 1976-08-04 | 48 |
3 | 小曾 | 1966-10-12 | 58 |
2、将不规则日期转为标准日期
import pandas as pd,datetime as dti
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.将不规则日期转为标准日期.xlsx" )
print (df) # 如果数据本来就是时间格式,则在用正则表达式的时候可能会提示出错。
df[ "采购日期1" ]=pd.to_datetime(df.采购日期.str.findall( "\d+" ).str.join( "-" )) # 如果join前面不加str也会报错
df[ "采购日期2" ]=pd.DatetimeIndex(df.采购日期.str.findall( "\d+" ).str.join( "-" ))
df[ "年龄" ]=(dti.datetime.now()-df[ "采购日期2" ]).dt.days
print (df)
返回:
产品 | 采购日期 | |
---|---|---|
0 | A | 2019/12/13 |
1 | B | 2018*10*14 |
2 | C | 2015.02.15 |
3 | D | 2017-12-16 |
4 | E | 2021#3#14 |
产品 | 采购日期 | 采购日期1 | 采购日期2 | 年龄 | |
---|---|---|---|---|---|
0 | A | 2019/12/13 | 2019-12-13 | 2019-12-13 | 1543 |
1 | B | 2018*10*14 | 2018-10-14 | 2018-10-14 | 1968 |
2 | C | 2015.02.15 | 2015-02-15 | 2015-02-15 | 3305 |
3 | D | 2017-12-16 | 2017-12-16 | 2017-12-16 | 2270 |
4 | E | 2021#3#14 | 2021-03-14 | 2021-03-14 | 1086 |
3、根据时间来计算金额
计算开始时间与结束时间之间的长度,然后按每分种10元的课酬计算每门课程的金额
import pandas as pd,datetime as dti
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.根据课时计算课酬.xlsx" )
print (df)
t1=pd.to_datetime(df.开始时间) #原数据是文本格式,需要转成时间戳格式
t2=pd.to_datetime(df.结束时间)
df[ "课长1" ]=pd.TimedeltaIndex(t1-t2).seconds/60
# df[ "课长2" ]=pd.TimedeltaIndex(t1-t2).map(lambda l:l.seconds)/60 等同上一行
df[ "金额" ]=(t1-t2).dt.seconds/60*10
print (df)
返回:
课程名称 | 开始时间 | 结束时间 | |
---|---|---|---|
0 | Pandas基础 | 2021-05-05 14:00:00 | 2021-05-05 15:30:00 |
1 | python入门 | 2021-05-06 08:30:00 | 2021-05-05 10:30:00 |
2 | Excel VBA | 2021-05-07 11:00:00 | 2021-05-05 12:30:00 |
3 | 精学Numpy | 2021-05-08 14:30:00 | 2021-05-05 16:30:00 |
课程名称 | 开始时间 | 结束时间 | 课长1 | 金额 | |
---|---|---|---|---|---|
0 | Pandas基础 | 2021-05-05 14:00:00 | 2021-05-05 15:30:00 | 1350.0 | 13500.0 |
1 | python入门 | 2021-05-06 08:30:00 | 2021-05-05 10:30:00 | 1320.0 | 13200.0 |
2 | Excel VBA | 2021-05-07 11:00:00 | 2021-05-05 12:30:00 | 1350.0 | 13500.0 |
3 | 精学Numpy | 2021-05-08 14:30:00 | 2021-05-05 16:30:00 | 1320.0 | 13200.0 |
3、借阅天数计算到期时间
import pandas as pd
df=pd.read_excel( "D:\Pyobject2023\object\测试\素材\素材测试.借阅天数计算到期时间.xlsx" )
print (df)
df[ "开始时间" ]=pd.to_datetime(df.开始时间) #原数据格式为文本,需转成时间戳格式
df[ "借阅天数" ]=pd.TimedeltaIndex(df.借阅天数, unit = "D" ) #原数据格式为文本,需转成时间差格式
df[ "到期时间" ]=df.开始时间+df.借阅天数
print (df)
返回:
书名 | 开始时间 | 借阅天数 | |
---|---|---|---|
0 | 神雕侠侣 | 2000-5-1 08:30:25 | 45 |
1 | 天龙八部 | 2001-10-1 09:30:46 | 66 |
2 | 鹿鼎记 | 2001-12-1 10:25:23 | 75 |
书名 | 开始时间 | 借阅天数 | 到期时间 | |
---|---|---|---|---|
0 | 神雕侠侣 | 2000-05-01 08:30:25 | 45 days | 2000-06-15 08:30:25 |
1 | 天龙八部 | 2001-10-01 09:30:46 | 66 days | 2001-12-06 09:30:46 |
2 | 鹿鼎记 | 2001-12-01 10:25:23 | 75 days | 2002-02-14 10:25:23 |